home *** CD-ROM | disk | FTP | other *** search
/ Technotools / Technotools (Chestnut CD-ROM)(1993).ISO / lang_c / cug106 / bspat1-4.doc < prev    next >
Text File  |  1984-06-14  |  3KB  |  106 lines

  1.     ; TITLE 'Skeleton BIOS for CP/M Version 1.4 w/ Back Space Patch'
  2.     ;
  3. MSIZE    EQU    48    ; SYSTEM MEMORY SIZE IN DECIMAL K BYTES
  4.     ;
  5.     ;
  6.     ; Features added or modified by H.R.Moran 10/2/72..10/15/79
  7.     ;
  8.     ;    The BDOS is patched at both cold and warm boot
  9.     ;    to handle a backspace for a CRT properly when
  10.     ;    the BDOS function read console buffered is used.
  11.     ;    This does not intefere with the operation of anyone
  12.     ;    else's (e.g. MICROSOFT,XITAN,WPDAISY) trapping of
  13.     ;    the backspace handling. This feature is conditionally
  14.     ;    assembled in under control of the CRT switch.
  15.     ;
  16.     ;    This method has one drawback. MOVCPM will not
  17.     ;    work properly under a system with this patch
  18.     ;    installed, it dies after indicating synchronization
  19.     ;    error. Therefore, you must keep at least one
  20.     ;    copy of an unpatched system around to generate
  21.     ;    new system sizes.
  22.     ;
  23.     ;
  24.     ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  25.     ; !                              !
  26.     ; !  THE LABEL 'BDOS' IN THIS EXAMPLE IS THE PLACE    !
  27.     ; !  YOU JUMP TO IN TURNING CONTROL OVER TO THE CCP   !
  28.     ; !  NOT THE BEGINNING OF CP/M AS IS THE CASE IN      !
  29.     ; !  SOME OTHER EXAMPLE BIOS'S. THAT IS THE 'BDOS'    !
  30.     ; !  IN THIS CODE IS 6 GREATER THAN THE BEGINNING     !
  31.     ; !  OF CP/M.                          !
  32.     ; !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  33.     ;
  34.     ; * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  35.     ; *                            *
  36.     ; *    SYMBOL DEFINITIONS AND EQUATES            *
  37.     ; *                            *
  38.     ; * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  39.  
  40.  
  41. TRUE    EQU    0FFFFH
  42. FALSE    EQU    NOT TRUE
  43.     ;
  44.     ;
  45. BELL    EQU    7        ;ring-a-ding-ding
  46. BS    EQU    8        ;BACKSPACE
  47. TAB    EQU    9        ;TAB
  48. LF    EQU    0AH        ;LINEFEED
  49. CR    EQU    0DH        ;CARRIAGE RETURN
  50.     ;
  51.     ;
  52. CRT        EQU    TRUE    ; CONTROLS BACKSPACE/DELETE
  53.                 ;  (IF TRUE, RUBOUT CAUSES BACKSPACE
  54.                 ;   IF FALSE, RUBOUT CAUSES ECHO.)
  55.  
  56. PATCH    EQU    MSIZE*1024-2*256    ;START OF THE CBIOS
  57.     ;
  58.     ORG    PATCH        ;ORIGIN OF THIS PROGRAM
  59.     ;
  60. CBASE    EQU    (MSIZE-16)*1024    ;BIAS FOR SYSTEMS LARGER THAN 16K
  61. CPMB    EQU    CBASE+2700H    ;BASE OF CP/M (= BASE OF CCP)
  62. CCP    EQU    CPMB        ;alias
  63. BDOS    EQU    CBASE+2F06H    ;BASE OF RESIDENT PORTION OF CP/M
  64. CPML    EQU    $-CPMB        ;LENGTH OF THE CP/M SYSTEM IN BYTES
  65. NSECTS    EQU    CPML/128    ;NO. OF SECTS TO LOAD ON WBOOT
  66.     ;
  67.     ;
  68.     ; *    JUMP VECTOR FOR INDIVIDUAL SUBROUTINES
  69.     ;
  70.     JMP    BOOT        ;COLD START
  71. WBOOTE:
  72.     JMP    WBOOT        ;WARM START
  73.     JMP    CONST        ;CONSOLE STATUS
  74.     JMP    CONIN        ;CONSOLE CHARACTER IN
  75.     JMP    CONOUT        ;CONSOLE CHARACTER OUT
  76.     JMP    LIST        ;LIST CHARACTER OUT
  77.     JMP    PUNCH        ;PUNCH CHARACTER OUT
  78.     JMP    READER        ;READER CHARACTER OUT
  79.     JMP    HOME        ;MOVE HEAD TO HOME POSITION
  80.     JMP    SELDSK        ;SELECT DISK
  81.     JMP    SETTRK        ;SET TRACK NUMBER
  82.     JMP    SETSEC        ;SET SECTOR NUMBER
  83.     JMP    SETDMA        ;SET DMA ADDRESS
  84.     JMP    READ        ;READ DISK
  85.     JMP    WRITE        ;WRITE DISK
  86.     ;
  87.  
  88. BOOT:
  89.     LXI    SP, 0100H    ; FIRST SET UP STACK POINTER
  90.     ;
  91.     ; PERFORM I/O INITIALIZATION HERE, IF NESSECARY
  92.     ;
  93.     LXI    H, SMSG        ; PRINT SIGNON MESSAGE
  94.     CALL    PMSG
  95.     ;
  96.     XRA    A
  97.     STA    IOBYTE        ; CLEAR THE IOBYTE
  98.     STA    CDISK        ; ALSO SET THE DEFAULT DISK TO A:
  99.     ;
  100.     MVI    A,031H        ; SELECT DRIVE A: FOR FUTURE OPERATIONS
  101.     STA    SELECT
  102.     ;
  103.     JMP    GOCPM        ;INITIALIZE AND GO TO CP/M
  104.     ;
  105. WBOOT:                ; RELOAD THE OPERATING SYSTEM FROM DISK
  106.